//
//  YJTabBarController.m
//  com.yjwh.yj
//
//  Created by ferver7 on 2018/10/8.
//  Copyright © 2018年 ferver7. All rights reserved.
//

#import "MDDTabBarController.h"
#import "HBDNavigationController.h"
//#import "YJLoginViewController.h"
#import "MDDLoginViewController.h"

@interface MDDTabBarController ()<AxcAE_TabBarDelegate>

@end

@implementation MDDTabBarController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self addChildViewControllers];
    
}
- (void)addChildViewControllers{
    // 创建选项卡的数据 想怎么写看自己，这块我就写笨点了
    NSArray <NSDictionary *>*VCArray =
    @[
      @{@"vc":[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"HOMEHBD"],@"normalImg":@"灰-首页",@"selectImg":@"蓝-首页",@"itemTitle":@"首页"},
      @{@"vc":[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"SHOPHBD"],@"normalImg":@"灰-商品",@"selectImg":@"蓝-商品",@"itemTitle":@"商品"},
      @{@"vc":[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"HUDONGHBD"],@"normalImg":@"灰-互动",@"selectImg":@"蓝-互动",@"itemTitle":@"车友圈"},
      @{@"vc":[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"SHOPCARTHBD"],@"normalImg":@"灰-购物车",@"selectImg":@"蓝-购物车",@"itemTitle":@"购物车"},
      @{@"vc":[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"SELFHBD"],@"normalImg":@"灰-我的",@"selectImg":@"蓝-我的",@"itemTitle":@"我的"}];
    // 1.遍历这个集合
    // 1.1 设置一个保存构造器的数组
    NSMutableArray *tabBarConfs = @[].mutableCopy;
    // 1.2 设置一个保存VC的数组
    NSMutableArray *tabBarVCs = @[].mutableCopy;
    [VCArray enumerateObjectsUsingBlock:^(NSDictionary * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        // 2.根据集合来创建TabBar构造器
        AxcAE_TabBarConfigModel *model = [AxcAE_TabBarConfigModel new];
        // 3.item基础数据三连
        model.itemTitle = [obj objectForKey:@"itemTitle"];
        model.selectImageName = [obj objectForKey:@"selectImg"];
        model.normalImageName = [obj objectForKey:@"normalImg"];
        // 4.设置单个选中item标题状态下的颜色
        model.selectColor = [UIColor AxcUI_colorWithHexColor:@"#4693CD"];
        model.normalColor = [UIColor AxcUI_colorWithHexColor:@"#666666"];
        model.titleLabel.font = mTitleFont(12);
        model.pictureWordsMargin = 0;
        model.icomImgViewSize = CGSizeMake(28, 28);
        
        // 备注 如果一步设置的VC的背景颜色，VC就会提前绘制驻留，优化这方面的话最好不要这么写
        // 示例中为了方便就在这写了
        HBDNavigationController *vc = [obj objectForKey:@"vc"];
//        vc.view.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.f
//                                                  green:arc4random()%255/255.f
//                                                   blue:arc4random()%255/255.f alpha:1];
        // 5.将VC添加到系统控制组
        [tabBarVCs addObject:vc];
        // 5.1添加构造Model到集合
        [tabBarConfs addObject:model];
    }];
    // 5.2 设置VCs -----
    // 一定要先设置这一步，然后再进行后边的顺序，因为系统只有在setViewControllers函数后才不会再次创建UIBarButtonItem，以免造成遮挡
    // 大意就是一定要让自定义TabBar遮挡住系统的TabBar
    self.viewControllers = tabBarVCs;
    //////////////////////////////////////////////////////////////////////////
    // 注：这里方便阅读就将AE_TabBar放在这里实例化了 使用懒加载也行
    // 6.将自定义的覆盖到原来的tabBar上面
    // 这里有两种实例化方案：
    // 6.1 使用重载构造函数方式：
    //    self.axcTabBar = [[AxcAE_TabBar alloc] initWithTabBarConfig:tabBarConfs];
    // 6.2 使用Set方式：
    self.axcTabBar = [AxcAE_TabBar new] ;
    self.axcTabBar.tabBarConfig = tabBarConfs;
    // 7.设置委托
    self.axcTabBar.delegate = self;
    self.axcTabBar.backgroundColor = [UIColor whiteColor];
    self.axcTabBar.backgroundImageView.backgroundColor = [UIColor whiteColor];
    // 8.添加覆盖到上边
    [self.tabBar addSubview:self.axcTabBar];
    CGRect rect = CGRectMake(0, 0, ScreenWidth, 0.5);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context,[UIColor AxcUI_colorWithHexCode:@"#ebebeb"].CGColor);
    CGContextFillRect(context, rect);
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [self.tabBar setShadowImage:img];
    [self.tabBar setBackgroundImage:[[UIImage alloc]init]];
   
    [self addLayoutTabBar]; // 10.添加适配
}
// 9.实现代理，如下：
- (void)axcAE_TabBar:(AxcAE_TabBar *)tabbar selectIndex:(NSInteger)index{
    
//    if (index == 3 && ![AppUserBaseModel sharedUserData]) {//未登录状态
//        HBDNavigationController * rootnc = self.viewControllers[tabbar.selectIndex];
//        UIViewController * rootvc = rootnc.topViewController;
//        if (![AppUserBaseModel sharedUserData] && ![WXApi isWXAppInstalled]) {
//            YJLoginViewController * lvc = mGetStoryboardViewController(@"LoginModule", @"yJLoginViewController");
//            lvc.isPush = YES;
//            [rootvc.navigationController pushViewController:lvc animated:YES];
//            return;
//        }
//         [[[LoginViewPopTool alloc]init] popLoginViewFromViewContorller:rootvc];
//        return;
//    }
    
        if (index >= 3 && [[AppUserBaseModel sharedUserData].phone isEqualToString:@"13975856648"]) {//游客模式的判断
            [[NSNotificationCenter defaultCenter] postNotificationName:@"appUserOutLogin" object:nil];
            return;
        }
    // 通知 切换视图控制器
    [tabbar.items enumerateObjectsUsingBlock:^(AxcAE_TabBarItem * _Nonnull item, NSUInteger idx, BOOL * _Nonnull stop) {
        item.isSelect = index == idx; // 当前点击的调整选中，其他否定
    }];
    [self setSelectedIndex:index];
//    self.axcTabBar.selectIndex = self.axcTabBar.currentSelectItem;
    // 自定义的AE_TabBar回调点击事件给TabBarVC，TabBarVC用父类的TabBarController函数完成切换
}
- (void)setSelectedIndex:(NSUInteger)selectedIndex{
//    if (selectedIndex == 3) {
//        if ([AppUserBaseModel sharedUserData]) {
//            return;
//        }
//    }
    [super setSelectedIndex:selectedIndex];
    if(self.axcTabBar){
        self.axcTabBar.selectIndex = selectedIndex;
    }
}

// 10.添加适配
- (void)addLayoutTabBar{
    // 使用重载viewDidLayoutSubviews实时计算坐标 （下边的 -viewDidLayoutSubviews 函数）
    // 能兼容转屏时的自动布局
}
- (void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    self.axcTabBar.frame = self.tabBar.bounds;
    [self.axcTabBar viewDidLayoutItems];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}



@end
